import 'dart:developer' as developer;
import '../errors/app_exception.dart';

class ErrorLoggerService {
  static void logError(
    dynamic error, {
    StackTrace? stackTrace,
    String? context,
    Map<String, dynamic>? extra,
  }) {
    final errorMessage = _getErrorMessage(error);
    final logData = {
      'error': errorMessage,
      'context': context,
      'extra': extra,
      'timestamp': DateTime.now().toIso8601String(),
    };

    if (error is AppException) {
      logData['code'] = error.code;
    }

    developer.log(
      errorMessage,
      name: 'ErrorLogger',
      error: error,
      stackTrace: stackTrace,
    );

    // 生产环境可以发送到错误收集服务（如 Sentry、Firebase Crashlytics）
    // _sendToErrorService(logData);
  }

  static String _getErrorMessage(dynamic error) {
    if (error is AppException) {
      return error.message;
    } else if (error is Exception) {
      return error.toString();
    } else {
      return error?.toString() ?? 'Unknown error';
    }
  }

  // 生产环境可以集成 Sentry 或 Firebase Crashlytics
  // static Future<void> _sendToErrorService(Map<String, dynamic> data) async {
  //   // 发送到错误收集服务
  // }
}

